﻿Imports EVOLTA.Promocion.Bl.Bc
Imports EVOLTA.Promocion.Bl.Be

Partial Class mantenedores_ubicacionVenta
    Inherits System.Web.UI.Page

    Private Ubicacions As List(Of EubicacionVenta) = Nothing
    Dim expression As String = Nothing
    Dim direction As SortDirection = SortDirection.Ascending

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Response.CacheControl = "no-cache"
        Response.AddHeader("Pragma", "no-cache")
        Response.Expires = -1
        '***********************************************************'
        btnAgregar.Attributes.Add("onclick", "MuestraPanel(); return false;")
        If Not IsPostBack Then
            cargarubicacionVenta()
            cargarDepartamento()
            cargarEstado()
            ddlProvincia.Items.Add(New ListItem("-- SELECCIONE --", "0"))
            ddlDistrito.Items.Add(New ListItem("-- SELECCIONE --", "0"))
        End If
        Dim scriptText As String = ""
        scriptText &= "function mensaje(){"
        scriptText &= "    alert('se graba correctamente.');"
        scriptText &= "}"
        ClientScript.RegisterClientScriptBlock(Me.GetType(), "mensaje()", scriptText, True)
    End Sub
    Protected Sub btnBuscar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBuscar.Click, lnkBtnCodigo.Click, lnkBtnUbicacion.Click
        gvwListaUbicacion.DataSource = Buscar(txtBuscar.Value.ToUpper.Trim)
        gvwListaUbicacion.DataBind()
    End Sub
    Private Function Buscar(ByVal filtro As String) As IEnumerable(Of EubicacionVenta )
        Dim Lubicacion As System.Collections.Generic.IEnumerable(Of EubicacionVenta) = Nothing
        Ubicacions = Session("lista")
        If Not Ubicacions Is Nothing Then
            If filtro.Length > 0 Then
                Dim x As Int32 = Asc(filtro.Substring(0, 1).Trim)
                If x >= 48 AndAlso x <= 57 Then
                    filtro = CType(filtro, Int32)
                    Lubicacion = From v In Ubicacions _
                                Where v.idUbicacion = filtro _
                                Select v
                    Return Lubicacion
                Else
                    Lubicacion = From v In Ubicacions _
                                Where v.descUbicacion Like "*" + filtro + "*" _
                                Select v
                End If
            Else
                Lubicacion = From v In Ubicacions _
                            Where v.descUbicacion Like "*" + filtro + "*" _
                            Select v
            End If
        End If
        Return Lubicacion
    End Function
    Protected Sub lnkBtn_Command(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.CommandEventArgs) _
    Handles lnkBtnCodigo.Command, lnkBtnUbicacion.Command, lnkBtnUbigeo.Command, lnkBtnEstado.Command
        Dim ubicacion As IEnumerable(Of EubicacionVenta) = Buscar(txtBuscar.Value.ToUpper.Trim)

        If Not ubicacion Is Nothing Then
            Select Case e.CommandName
                Case "idUbicacion"
                    Dim List = From d In ubicacion _
                               Order By d.idUbicacion _
                               Select d
                    gvwListaUbicacion.DataSource = List
                    gvwListaUbicacion.DataBind()
                Case "descUbicacion" : expression = e.CommandArgument
                    Dim List = From d In ubicacion _
                               Order By d.descUbicacion _
                               Select d
                    gvwListaUbicacion.DataSource = List
                    gvwListaUbicacion.DataBind()
                Case "ubigeo" : expression = e.CommandArgument
                    Dim List = From d In ubicacion _
                               Order By d.idUbicacion _
                               Select d
                    gvwListaUbicacion.DataSource = List
                    gvwListaUbicacion.DataBind()
                Case "descEstado" : expression = e.CommandArgument
                    Dim List = From d In ubicacion _
                               Order By d.estado _
                               Select d
                    gvwListaUbicacion.DataSource = List
                    gvwListaUbicacion.DataBind()
            End Select
        End If
    End Sub
    Protected Sub ddlDepartamento_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlDepartamento.SelectedIndexChanged
        If ddlDepartamento.SelectedItem Is Nothing Then
            Return
        End If
        If ddlDepartamento.SelectedIndex > 0 Then
            ddlProvincia.Items.Clear()
            ddlDistrito.Items.Clear()
            ddlDistrito.Items.Add(New ListItem("-- SELECCIONE --", "0"))
            cargarProvincia(ddlDepartamento.SelectedItem.Value)
        Else
            ddlProvincia.Items.Clear()
            ddlDistrito.Items.Clear()
            ddlProvincia.Items.Add(New ListItem("-- SELECCIONE --", "0"))
            ddlDistrito.Items.Add(New ListItem("-- SELECCIONE --", "0"))
        End If
        upProvincia.Update()
        upDistrito.Update()
    End Sub
    Protected Sub ddlProvincia_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlProvincia.SelectedIndexChanged
        If ddlProvincia.SelectedItem Is Nothing Then
            Return
        End If
        If ddlProvincia.SelectedIndex > 0 Then
            ddlDistrito.Items.Clear()
            cargarDistrito(ddlDepartamento.SelectedItem.Value, ddlProvincia.SelectedItem.Value)
        Else
            ddlDistrito.Items.Clear()
            ddlDistrito.Items.Add(New ListItem("-- SELECCIONE --", "0"))
        End If
        upDistrito.Update()
    End Sub
    Private Sub cargarubicacionVenta()
        Ubicacions = RubicacionVenta.SeleccionarTodo(Me.Master.descEmpresa, False)
        Session("lista") = Ubicacions
        If Not Ubicacions Is Nothing Then
            gvwListaUbicacion.DataSource = Ubicacions
            gvwListaUbicacion.DataBind()
        End If
    End Sub
    Private Sub cargarEstado()
        Dim Eestado As New Ecommons
        selEstadoUbicacion.DataSource = Eestado.estado
        selEstadoUbicacion.DataTextField = "descripcion"
        selEstadoUbicacion.DataValueField = "codigo"
        selEstadoUbicacion.DataBind()
    End Sub
    Private Sub cargarDepartamento()
        ddlDepartamento.DataSource = Rubigeo.SeleccionarTodoXDepartamento(Me.Master.descEmpresa, True)
        ddlDepartamento.DataTextField = "descripcion"
        ddlDepartamento.DataValueField = "idUbigeo"
        ddlDepartamento.DataBind()
    End Sub
    Private Sub cargarProvincia(ByVal idDepartamento As String)
        ddlProvincia.DataSource = Rubigeo.SeleccionarTodoXProvincia(Me.Master.descEmpresa, True, idDepartamento)
        ddlProvincia.DataTextField = "descripcion"
        ddlProvincia.DataValueField = "idUbigeo"
        ddlProvincia.DataBind()
    End Sub
    Private Sub cargarDistrito(ByVal idDepartamento As String, ByVal idProvincia As String)
        ddlDistrito.DataSource = Rubigeo.SeleccionarTodoXDistrito(Me.Master.descEmpresa, True, idDepartamento, idProvincia)
        ddlDistrito.DataTextField = "descripcion"
        ddlDistrito.DataValueField = "idUbigeo"
        ddlDistrito.DataBind()
    End Sub
    Protected Sub gvwListaUbicacion_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) _
    Handles gvwListaUbicacion.PageIndexChanging
    End Sub
    Protected Sub gvwListaUbicacion_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) _
    Handles gvwListaUbicacion.RowCommand
        Select Case e.CommandName
            Case "Edit"

                'Dim id As String = e.CommandArgument
            Case "Delete"
                Dim pUbicacionVenta As EubicacionVenta = New EubicacionVenta
                With pUbicacionVenta
                    .idUbicacion = e.CommandArgument
                    .idUsuario = Me.Master.idUsuario
                End With
                RubicacionVenta.Eliminar(Me.Master.descEmpresa, pUbicacionVenta)
                cargarubicacionVenta()
        End Select
    End Sub
    Protected Sub gvwListaUbicacion_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) _
    Handles gvwListaUbicacion.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            e.Row.Attributes("OnClick") = Page.ClientScript.GetPostBackClientHyperlink(Me.gvwListaUbicacion, "Select$" + e.Row.RowIndex.ToString)
            e.Row.Style.Add("cursor", "hand")
        End If
    End Sub
    Protected Sub gvwListaUbicacion_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles gvwListaUbicacion.RowDeleting

    End Sub
    Protected Sub gvwLista_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles gvwListaUbicacion.RowEditing
        Dim id As Int32 = CType(CType(gvwListaUbicacion.Rows(e.NewEditIndex).FindControl("lnkCodigo"), LinkButton).Text, Int32)
        Ubicacions = Session("lista")
        Dim Lubicacion = From v In Ubicacions _
                            Where v.idUbicacion.ToString = id _
                            Select v
        lblTitulo.Text = "Ubicación de Venta [Modificar]"
        lblTitulo.ToolTip = "Modificar"
        txtId.Text = Lubicacion.ElementAt(0).idUbicacion
        txtUbicacion.Value = Lubicacion.ElementAt(0).descUbicacion
        ddlDepartamento.SelectedValue = Lubicacion.ElementAt(0).Eubigeo.idUbigeo.Substring(0, 2)
        upDepartamento.Update()
        cargarProvincia(ddlDepartamento.SelectedItem.Value)
        ddlProvincia.SelectedValue = Lubicacion.ElementAt(0).Eubigeo.idUbigeo.Substring(2, 2)
        upProvincia.Update()
        cargarDistrito(ddlDepartamento.SelectedItem.Value, ddlProvincia.SelectedItem.Value)
        ddlDistrito.SelectedValue = Lubicacion.ElementAt(0).Eubigeo.idUbigeo.Substring(4, 2)
        upDistrito.Update()
        selEstadoUbicacion.SelectedIndex = Lubicacion.ElementAt(0).estado
        mpDetalle.Show()
    End Sub
    Protected Sub btnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        If txtUbicacion.Value.Trim.Length > 0 AndAlso ddlDepartamento.SelectedIndex > 0 AndAlso ddlProvincia.SelectedIndex > 0 AndAlso ddlDistrito.SelectedIndex > 0 Then
            Dim jsMensaje As String = Nothing
            Dim pUbicacionVenta As EubicacionVenta = Nothing
            If lblTitulo.ToolTip = "Registrar" Then
                pUbicacionVenta = New EubicacionVenta
                With pUbicacionVenta
                    .descUbicacion = txtUbicacion.Value.Trim.ToUpper
                    .Eubigeo = New Eubigeo
                    .Eubigeo.idUbigeo = ddlDepartamento.SelectedItem.Value + _
                                       ddlProvincia.SelectedItem.Value + _
                                       ddlDistrito.SelectedItem.Value
                    .idUsuario = Me.Master.idUsuario
                End With
                Dim resultado As Boolean = _
                        RubicacionVenta.Añadir(Me.Master.descEmpresa, pUbicacionVenta)
                If resultado Then
                    jsMensaje = "<script>javascript:alert(' Se registro correctamente.');</script>)"
                    Controls.Add(New LiteralControl(jsMensaje))
                    cargarubicacionVenta()
                Else
                    jsMensaje = "<script>javascript:alert('No se pudo registrar.');</script>)"
                    Controls.Add(New LiteralControl(jsMensaje))
                End If
            ElseIf lblTitulo.ToolTip = "Modificar" Then
                pUbicacionVenta = New EubicacionVenta
                With pUbicacionVenta
                    .idUbicacion = CType(txtId.Text, Int32)
                    .descUbicacion = txtUbicacion.Value.Trim.ToUpper
                    .Eubigeo = New Eubigeo
                    .Eubigeo.idUbigeo = ddlDepartamento.SelectedItem.Value + _
                                       ddlProvincia.SelectedItem.Value + _
                                       ddlDistrito.SelectedItem.Value
                    .idUsuario = Me.Master.idUsuario
                    .estado = selEstadoUbicacion.Value
                End With
                jsMensaje = "<script>javascript:alert(' Se modifico correctamente.');</script>)"
                Controls.Add(New LiteralControl(jsMensaje))
                RubicacionVenta.Editar(Me.Master.descEmpresa, pUbicacionVenta)
                cargarubicacionVenta()
            End If
            lblTitulo.ToolTip = "Registrar"
        End If
        inicializarUbigeo()
    End Sub
    Private Sub inicializarUbigeo()
        ddlProvincia.Items.Clear()
        ddlDistrito.Items.Clear()
        ddlProvincia.Items.Add(New ListItem("-- SELECCIONE --", "0"))
        ddlDistrito.Items.Add(New ListItem("-- SELECCIONE --", "0"))
        upProvincia.Update()
        upDistrito.Update()
    End Sub
    Protected Sub btnCancelar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        lblTitulo.ToolTip = "Registrar"
        mpDetalle.CancelControlID = "btnCancelar"
    End Sub
    Protected Sub btnExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExcel.Click
        Ubicacions = Session("lista")
        If Not Ubicacions Is Nothing Then
            Dim fileName As String = "Consulta{0}.xls"
            fileName = String.Format(fileName, DateTime.Now.ToShortDateString())
            Dim Response As HttpResponse = HttpContext.Current.Response
            Response.ContentType = "application/vnd.ms-excel"
            Response.Charset = "UTF-8"
            Response.ContentEncoding = System.Text.Encoding.Default
            Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName)

            Response.Write("ID")
            Response.Write(vbTab)
            Response.Write("Descripcion de Ubicación")
            Response.Write(vbTab)
            Response.Write("Departamento")
            Response.Write(vbTab)
            Response.Write("Provincia")
            Response.Write(vbTab)
            Response.Write("Distrito")
            Response.Write(vbTab)
            Response.Write("Estado")
            Response.Write(vbCrLf)

            Dim value As String
            For Each ubicaciones In Ubicacions
                value = ubicaciones.idUbicacion
                Response.Write(value)
                Response.Write(vbTab)

                value = ubicaciones.descUbicacion
                Response.Write(value)
                Response.Write(vbTab)

                value = ubicaciones.Eubigeo.descDepartamento
                Response.Write(value)
                Response.Write(vbTab)

                value = ubicaciones.Eubigeo.descProvincia
                Response.Write(value)
                Response.Write(vbTab)

                value = ubicaciones.Eubigeo.descDistrito
                Response.Write(value)
                Response.Write(vbTab)

                value = ubicaciones.descEstado
                Response.Write(value)
                Response.Write(vbCrLf)
            Next
            Response.End()
        Else
            Dim jsMensaje As String = Nothing
            jsMensaje = "<script>javascript:alert(' La consulta no pudo ser procesada.  Por favor inténtelo de nuevo.');</script>)"
            Controls.Add(New LiteralControl(jsMensaje))
        End If
    End Sub

End Class
